﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Didsoft.Silverlight.ViewModel;
using Didsoft.Silverlight.ViewModel.Commanding.Contracts;
using ICIA.ARojas.Silverlight.WCFClient.UsuarioCliente;

namespace ICIA.ARojas.Visual.Usuario.ViewModel
{
    public class VmCambiarContrasena : BindableObject
    {

        #region servicios

        UsuarioNegociosServicioClient servicio = new UsuarioNegociosServicioClient();

        #endregion


        #region bindables


        private string claveActual;
        public string ClaveActual
        {
            get { return claveActual; }
            set { claveActual = value; FirePropertyChanged("ClaveActual"); CmdCambiar.RaiseCanExecuteChanged(); }
        }

        private string claveNueva;
        public string ClaveNueva
        {
            get { return claveNueva; }
            set { claveNueva = value; FirePropertyChanged("ClaveNueva"); CmdCambiar.RaiseCanExecuteChanged(); }
        }

        private string claveNuevaRepite;
        public string ClaveNuevaRepite
        {
            get { return claveNuevaRepite; }
            set { claveNuevaRepite = value; FirePropertyChanged("ClaveNuevaRepite"); CmdCambiar.RaiseCanExecuteChanged(); }
        }

        #endregion

        #region constructor

        public VmCambiarContrasena()
        {
            CmdCambiar = new DelegateCommand<string>(Ejecutado, PuedeEjecutar);
        }

        #endregion


        #region comando

        private ICommandEvent cmdCambiar;
        public ICommandEvent CmdCambiar
        {
            get { return cmdCambiar; }
            set { cmdCambiar = value; FirePropertyChanged("CmdCambiar"); }
        }

        public void Ejecutado(string prop)
        {
            servicio.CambiarContrasenaCompleted += new EventHandler<CambiarContrasenaCompletedEventArgs>(servicio_CambiarContrasenaCompleted);
            servicio.CambiarContrasenaAsync(ICIA.ARojas.Silverlight.Session.Datos.Current.Usuario.Id, ClaveActual, ClaveNueva);      
        }

        void servicio_CambiarContrasenaCompleted(object sender, CambiarContrasenaCompletedEventArgs e)
        {
            if (e.Error == null)
                Didsoft.Silverlight.ContentManager.MessageBox.Show("Su contrasena ha sido cambiada correctamente");
            else
                Didsoft.Silverlight.ContentManager.MessageBox.Show(e.Error.Message);
        }

        public bool PuedeEjecutar(string prop)
        {
            return !string.IsNullOrEmpty(ClaveActual) && !string.IsNullOrEmpty(ClaveNueva) && !string.IsNullOrEmpty(ClaveNuevaRepite) && (ClaveNueva.Equals(ClaveNuevaRepite)); 
        }

        #endregion

    }
}
